<?php
class Candidato extends CI_Controller{

    var $url = 'candidato/';
    var $pre ='candidato';

    function __construct(){
        parent::__construct();
        $this->lang->load('candidato');
        $this->load->library("check_dni_nie_es");
        $this->userId = $this->session->userdata("id_usuario");
    }

	function principal(){
        $this->load->view('candidato_inicio');
	}

    function perfil(){
        $data = array();
        
        $candidato = $this->util->damerow("SELECT can.*, CASE(can.estatus_lab) WHEN 1 THEN 'Desempleado' WHEN 2 THEN 'Empleado' WHEN 3 THEN 'Mejora' END estatus_lab, pro.nombre provincia, pais.nombre pais, GROUP_CONCAT(DISTINCT area.area_conocimiento ORDER BY area.area_conocimiento ASC SEPARATOR ', ') conocimientos  FROM candidato can INNER JOIN poblacion po ON (can.poblacion = po.nombre) INNER JOIN provincia pro ON (po.id_provincia = pro.id) INNER JOIN pais ON (pro.id_pais = pais.id) LEFT JOIN candidatos_conocimientos cancon ON (can.id = cancon.id_candidato) LEFT JOIN areas_conocimientos area ON (cancon.id_area_con = area.id) WHERE id_usuario = $this->userId");        
        if(!empty($candidato))
            $data["candidato"] = $candidato;
        else{
            $data["candidato"]["id"           ] = "Usuario no identificado";
            $data["candidato"]["dni"          ] = "Usuario no identificado";
            $data["candidato"]["sexo"         ] = "Usuario no identificado";
            $data["candidato"]["fecha_nac"    ] = "Usuario no identificado";
            $data["candidato"]["nombre"       ] = "Usuario no identificado";
            $data["candidato"]["apellido"     ] = "Usuario no identificado";
            $data["candidato"]["apellido2"    ] = "Usuario no identificado";
            $data["candidato"]["email"        ] = "Usuario no identificado";
            $data["candidato"]["movil"        ] = "Usuario no identificado";
            $data["candidato"]["sms"          ] = "Usuario no identificado";
            $data["candidato"]["tlf"          ] = "Usuario no identificado";
            $data["candidato"]["tlf2"         ] = "Usuario no identificado";
            $data["candidato"]["via"          ] = "Usuario no identificado";
            $data["candidato"]["nombre_via"   ] = "Usuario no identificado";
            $data["candidato"]["numero_via"   ] = "Usuario no identificado";
            $data["candidato"]["puerta"       ] = "Usuario no identificado";
            $data["candidato"]["codigo_pos"   ] = "Usuario no identificado";
            $data["candidato"]["direccion"    ] = "Usuario no identificado";
            $data["candidato"]["estatus_lab"  ] = "Usuario no identificado";
            $data["candidato"]["renovacion"   ] = "Usuario no identificado";
            $data["candidato"]["caducidad"    ] = "Usuario no identificado";
            $data["candidato"]["fecha_reg"    ] = "Usuario no identificado";
            $data["candidato"]["minusvalia"   ] = "Usuario no identificado";
            $data["candidato"]["grado_min"    ] = "Usuario no identificado";
            $data["candidato"]["horario"      ] = "Usuario no identificado";
            $data["candidato"]["viajar"       ] = "Usuario no identificado";
            $data["candidato"]["vehiculo"     ] = "Usuario no identificado";
            $data["candidato"]["poblacion"    ] = "Usuario no identificado";
            $data["candidato"]["provincia"    ] = "Usuario no identificado";
            $data["candidato"]["pais"         ] = "Usuario no identificado";
            $data["candidato"]["img"          ] = "default.png";
            $data["candidato"]["conocimientos"] = "";
        }
        $data["formImg"] = array("id" => "formImg", "style" => "visibility:hidden;");
        $this->load->view('candidato_perfil', $data);
    }

    function updateData(){
        $msj         = '';
		$error       = '';
        $array_error = '';
        $table       = 'candidato';
        $pkey        = 'id';
        $oper        = 'edit';
        $post        = $this->input->post();
        $id          = $post['id'];
        $ejecutaPost = array();
        //Destruyo datos innecesarios para el post
        unset($post["pais"], $post["provincia"]);
        $valid       = array(
            array(
                'field' => 'dni',
                'label' => 'DNI/NIE',
                'rules' => "callback_dniCheck[$id]|required|trim|exact_length[9]"
            ),
            array(
                'field' => 'nombre',
                'label' => 'Nombre',
                'rules' => "required|trim"
            ),
            array(
                'field' => 'apellido',
                'label' => 'apellido',
                'rules' => "required|trim"
            ),
            array(
                'field' => 'sexo',
                'label' => 'sexo',
                'rules' => "required|trim"
            ),
            array(
                'field' => 'fecha_nac',
                'label' => 'fecha_nac',
                'rules' => "required|trim"
            ),
            array(
                'field' => 'movil',
                'label' => 'movil',
                'rules' => "required|trim"
            ),
            array(
                'field' => 'email',
                'label' => 'Email',
                'rules' => "required|trim|valid_email"
            )
        );
        $this->form_validation->set_rules($valid);
        $this->form_validation->set_message("required", "El campo %s es requerido");
        $this->form_validation->set_message("exact_length","El campo %s debe tener una longitud exacta de %s caracteres");
        $this->form_validation->set_message("alpha_dash","El campo %s debe tener caracteres alfanuméricos y guiones");
        $this->form_validation->set_message("valid_email","Introduzca un email válido");
        if($this->form_validation->run() === false){
            $error .= $this->load->view('validation_errors',array(),true);
            $array_error = $this->form_validation->array_errors();
        }
        $post["apellido2"]    = ($post["apellido2"]    === "") ? NULL : $post["apellido2"];
        $post["via"]          = ($post["via"]          === "") ? NULL : $post["via"];
        $post["nombre_via"]   = ($post["nombre_via"]   === "") ? NULL : $post["nombre_via"];
        $post["numero_via"]   = ($post["numero_via"]   === "") ? NULL : $post["numero_via"];
        $post["puerta"]       = ($post["puerta"]       === "") ? NULL : $post["puerta"];
        $post["codigo_pos"]   = ($post["codigo_pos"]   === "") ? NULL : $post["codigo_pos"];
        $post["direccion"]    = ($post["direccion"]    === "") ? NULL : $post["direccion"];
        $post["estatus_lab"]  = ($post["estatus_lab"]  === "") ? NULL : $post["estatus_lab"];
        $post["renovacion"]   = ($post["renovacion"]   === "") ? NULL : $post["renovacion"];
        $post["caducidad"]    = ($post["caducidad"]    === "") ? NULL : $post["caducidad"];
        $post["horario"]      = ($post["horario"]      === "") ? NULL : $post["horario"];
        $post["viajar"]       = ($post["viajar"]       === "") ? NULL : $post["viajar"];
        $post["poblacion"]    = ($post["poblacion"]    === "") ? NULL : $post["poblacion"];
        
        if(empty($error)){//Si no hay errores de validacion...
            $ejecutaPost = guardar($table, $post, $pkey, $post["id"]);
            if($ejecutaPost["error"] !== '')
                $error .= "<div class='ui-state-error' style='padding:2px;'>".$ejecutaPost["error"]."</div>";
        }
        
        echo json_encode(array("error" => $error, "array_error" => $array_error));
    }

    function dniCheck($dni, $id){
        $query = $this->db->get_where('candidato', array('id !=' => $id, 'dni' => $dni));  
        if($query->num_rows() > 0){
            $this->form_validation->set_message('dniCheck', 'El %s ya está registrado para otro candidato');
			return FALSE;
        }
        elseif(!$this->check_dni_nie_es->esValido($dni)){
            $this->form_validation->set_message('dniCheck', 'El DNI/NIE %s no es válido');
            return FALSE;
        }
        return TRUE;
    }

    /* Método encargado de hacer la subida de la imagen del perfil del candidato */
    function doUpload(){
        $config['upload_path'] = './application/uploads/candidatos';
		$config['allowed_types'] = 'gif|jpg|jpeg|png';
        $config['file_name'] = "img-profile-".$this->userId;
		$config['max_size']	= '20048';
		$config['max_width']  = '1024';
		$config['max_height']  = '768';
        $error = '';
        $data = '';
        $success = 0;
		$this->load->library('upload', $config);
		if ( ! $this->upload->do_upload("input_img"))
            $error = $this->upload->display_errors("<div class='ui-state-error' style='padding:3px;'>", "</div>");
		else{
            $data = $this->upload->data();
            $success = 1;
            $this->db->where('id', $this->input->post("id"));
            $this->db->update('candidato', array("img" => $data["file_name"])); 
        }
        echo json_encode(array("error" => $error, "data" => $data, "success" => $success));
    }

    /* Método para obtener las tags disponibles para el autocomplete */ 
    function autocomplete(){
        $table = $this->input->post("table");
        echo json_encode(array("areasConocimientos" => autoCompleteTags($table)));
    }

}

?>
